package com.cgs.query.service

import com.cgs.query.domain.QueryDefine

/**
 * 定义业务接口
 */
interface IQueryDefineService {

    /**
     * 保存
     */
    fun save(define: QueryDefine): QueryDefine

    /**
     * 保存
     * 返回执行数量
     */
    fun save(define: Iterable<QueryDefine>)

    /**
     * 删除
     */
    fun delete(id: String)

    fun delete(defines: List<QueryDefine>)

    /**
     * 是否存在
     * 判断名称是否相同
     */
    fun exist(define: QueryDefine)

    fun findById(id: String): QueryDefine?

    fun findByIds(ids: Iterable<String>): List<QueryDefine>?

    fun findByName(name: String): List<QueryDefine>?

    /**
     * 通过项目名进行查询
     */
    fun findByProjectName(projectName: String): List<QueryDefine>?

    /**
     * 通过定义名和项目名查询
     */
    fun findByNameAndProjectName(name: String, projectName: String): QueryDefine?

    /**
     * 通过标签名称集合,定义名模糊 查询
     * 分页
     */
    fun findByTagNamesAndNameLike(pn: Int, ps: Int, tagNames: List<String>, defineName: String): Any?

    /**
     * 通过定义名 模糊查询
     * 分页
     */
    fun findByNameLike(pn: Int, ps: Int, defineName: String): Any?

    /**
     * 通过标签名称集合 查询
     * 分页
     */
    fun findByTagNames(pn: Int, ps: Int, tagNames: List<String>): Any?

    /**
     * 查询定义
     * 通过标签名
     */
    fun findByTagName(tagName: String): List<QueryDefine>?

    /**
     * 查询所有
     * 分页
     */
    fun findAll(pn: Int, ps: Int): Any?

}


